অ্যাপাচি কমন্স আইও (Apache Commons IO) লাইব্রেরি ফাইল মনিটরিং (File Monitoring) এবং ফাইল অ্যালটারেশন লিসেনার (File Alteration Listener) এর জন্য বেশ কিছু কার্যকরী টুল সরবরাহ করে। এটি ফাইল সিস্টেমে কোনো পরিবর্তন (যেমন ফাইল তৈরি, মুছা, বা পরিবর্তন) শনাক্ত করতে এবং সেই অনুযায়ী প্রতিক্রিয়া জানাতে সাহায্য করে। এই ফিচারটি বিশেষত দরকারি যখন আপনি ফাইল সিস্টেমের উপর নজর রাখতে চান এবং ফাইলের পরিবর্তনের ক্ষেত্রে স্বয়ংক্রিয়ভাবে কিছু অ্যাকশন নিতে চান।
অ্যাপাচি কমন্স আইও লাইব্রেরি FileAlterationMonitor
এবং FileAlterationListener
ক্লাস সরবরাহ করে, যা ফাইল বা ডিরেক্টরির মধ্যে কোনো পরিবর্তন মনিটর করতে এবং সেই পরিবর্তনগুলোর উপর লিসেনার বা কার্যক্রম নিতে সাহায্য করে।
FileAlterationMonitor হল একটি ক্লাস যা একটি নির্দিষ্ট ডিরেক্টরি এবং তার অধীনে ফাইলগুলোর পরিবর্তন মনিটর করতে ব্যবহৃত হয়। এটি একটি থ্রেডেড পদ্ধতিতে কাজ করে, এবং নির্দিষ্ট সময়ের মধ্যে একবার করে ডিরেক্টরি স্ক্যান করে দেখার পরবর্তী পরিবর্তনগুলো চেক করে।
import org.apache.commons.io.monitor.*;
import java.io.File;
import java.io.IOException;
public class FileMonitoringExample {
public static void main(String[] args) throws IOException {
// 1. FileAlterationObserver তৈরি করুন
File directoryToMonitor = new File("/path/to/directory");
FileAlterationObserver observer = new FileAlterationObserver(directoryToMonitor);
// 2. FileAlterationListener তৈরি করুন
FileAlterationListener listener = new FileAlterationListenerAdaptor() {
@Override
public void onFileCreate(File file) {
System.out.println("File created: " + file.getName());
}
@Override
public void onFileChange(File file) {
System.out.println("File changed: " + file.getName());
}
@Override
public void onFileDelete(File file) {
System.out.println("File deleted: " + file.getName());
}
};
// 3. লিসেনার যোগ করুন
observer.addListener(listener);
// 4. FileAlterationMonitor তৈরি এবং চালানো
FileAlterationMonitor monitor = new FileAlterationMonitor(5000); // 5000ms বা 5 সেকেন্ড পর পর চেক করবে
monitor.addObserver(observer);
try {
monitor.start(); // মনিটর চালু
} catch (Exception e) {
e.printStackTrace();
}
}
}
এখানে:
FileAlterationListener একটি ইন্টারফেস যা FileAlterationMonitor এর মাধ্যমে ডিরেক্টরিতে বা ফাইলের মধ্যে কোনো পরিবর্তন ঘটলে সাড়া দেওয়ার জন্য ব্যবহৃত হয়। এটি তিনটি প্রধান মেথডের মাধ্যমে ফাইল বা ডিরেক্টরি পরিবর্তনের উপর প্রতিক্রিয়া জানায়:
এছাড়া, onDirectoryCreate
, onDirectoryChange
, onDirectoryDelete
মেথডগুলিও ডিরেক্টরি সম্পর্কিত পরিবর্তনের জন্য উপলব্ধ।
import org.apache.commons.io.monitor.*;
import java.io.File;
public class DirectoryMonitorExample {
public static void main(String[] args) throws Exception {
// মনিটর করার জন্য ডিরেক্টরি
File directoryToMonitor = new File("/path/to/directory");
// ফাইল পরিবর্তন লিসেনার
FileAlterationListener listener = new FileAlterationListenerAdaptor() {
@Override
public void onDirectoryCreate(File directory) {
System.out.println("Directory created: " + directory.getAbsolutePath());
}
@Override
public void onDirectoryChange(File directory) {
System.out.println("Directory changed: " + directory.getAbsolutePath());
}
@Override
public void onDirectoryDelete(File directory) {
System.out.println("Directory deleted: " + directory.getAbsolutePath());
}
};
// ডিরেক্টরি মনিটর করা
FileAlterationObserver observer = new FileAlterationObserver(directoryToMonitor);
observer.addListener(listener);
// মনিটর চালু করা
FileAlterationMonitor monitor = new FileAlterationMonitor(5000); // 5 সেকেন্ড পর পর চেক করবে
monitor.addObserver(observer);
monitor.start();
}
}
এখানে:
FileAlterationListenerAdaptor
ক্লাসটি একটি অ্যাডাপ্টার ক্লাস যা FileAlterationListener
ইন্টারফেসের মেথডগুলিকে কাস্টমাইজ করার সুবিধা দেয়।FileAlterationObserver একটি অবজেক্ট যা একটি নির্দিষ্ট ডিরেক্টরি পর্যবেক্ষণ করে এবং সেই ডিরেক্টরিতে পরিবর্তন শনাক্ত করার জন্য একটি বা একাধিক FileAlterationListener যোগ করতে পারে। এটি মূলত ফাইল বা ডিরেক্টরি পর্যবেক্ষণের জন্য ব্যবহার করা হয়।
অ্যাপাচি কমন্স আইও লাইব্রেরির FileAlterationMonitor এবং FileAlterationListener ফিচারগুলো ফাইল এবং ডিরেক্টরি পর্যবেক্ষণের জন্য অত্যন্ত কার্যকরী। এগুলো স্বয়ংক্রিয়ভাবে ফাইল বা ডিরেক্টরিতে পরিবর্তন শনাক্ত করতে সাহায্য করে এবং সেই পরিবর্তনের উপর ভিত্তি করে প্রয়োজনীয় কার্যক্রম সম্পাদন করতে পারে। এই ফিচারগুলি বিভিন্ন ধরণের অ্যাপ্লিকেশন যেমন লগ মনিটরিং, ফাইল সিঙ্ক্রোনাইজেশন, এবং ডেটা ব্যাকআপ সিস্টেমে খুবই উপকারী হতে পারে।
File Monitoring একটি প্রক্রিয়া যেখানে ফাইল সিস্টেমে কোনো পরিবর্তন ঘটলে তা পর্যবেক্ষণ করা হয়, যেমন নতুন ফাইল তৈরি, বিদ্যমান ফাইল পরিবর্তন অথবা ফাইল মুছে ফেলা। Java-তে file monitoring বিভিন্ন ধরনের কাজের জন্য ব্যবহৃত হয়, যেমন ফাইল সিস্টেম পরিবর্তন ট্র্যাক করা, লোগ ফাইল পর্যবেক্ষণ, ফাইলের কনটেন্ট চেক করা এবং অন্যান্য অনেক অপারেশন।
Apache Commons IO লাইব্রেরি file monitoring এর জন্য কিছু কার্যকরী ইউটিলিটি সরবরাহ করে, যা আপনাকে আপনার অ্যাপ্লিকেশনে ফাইল সিস্টেমের পরিবর্তনগুলো সঠিকভাবে ট্র্যাক করতে সাহায্য করে। এটি সাধারণত FileAlterationMonitor
এবং FileAlterationObserver
ক্লাস ব্যবহার করে কাজ করে।
এই নিবন্ধে আমরা File Monitoring এর প্রয়োজনীয়তা, কেন এটি দরকার এবং কিভাবে Apache Commons IO ব্যবহার করে এটি বাস্তবায়ন করা যায় তা নিয়ে আলোচনা করব।
File Monitoring হল একটি প্রক্রিয়া যেখানে একটি প্রোগ্রাম বা অ্যাপ্লিকেশন ফাইল সিস্টেমের নির্দিষ্ট ডিরেক্টরি বা ফাইলগুলিতে পরিবর্তন পর্যবেক্ষণ করে। এটি মূলত ফাইল সিস্টেমের কনটেন্টে যেকোনো ধরনের পরিবর্তন ঘটলে সেগুলোর ট্র্যাক রাখে। যখনই ফাইলের কনটেন্টে কোনো পরিবর্তন হয়, যেমন নতুন ফাইল তৈরি, বিদ্যমান ফাইল আপডেট বা মুছে ফেলা, তখন মনিটরিং সিস্টেম তা স্বীকৃতি দেয় এবং প্রক্রিয়া শুরু করে।
File Monitoring ব্যবহৃত হয় এমন কিছু ক্ষেত্রে:
ফাইল সিস্টেমের পরিবর্তন ট্র্যাক করার প্রয়োজনীয়তা বিভিন্ন পরিস্থিতিতে দেখা দিতে পারে, যেমন:
Apache Commons IO লাইব্রেরি FileAlterationMonitor
এবং FileAlterationObserver
এর মাধ্যমে ফাইল সিস্টেমের পরিবর্তন ট্র্যাক করতে সহায়তা করে। এখানে FileAlterationObserver
একটি নির্দিষ্ট ডিরেক্টরি পর্যবেক্ষণ করে এবং যখনই কোনো পরিবর্তন ঘটে, তখন FileAlterationMonitor
সেই পরিবর্তনকে ট্র্যাক করে এবং উপযুক্ত কাজ সম্পাদন করে।
FileAlterationObserver একটি নির্দিষ্ট ডিরেক্টরি এবং তার ভিতরের ফাইলগুলির পরিবর্তন পর্যবেক্ষণ করে। এটি ডিরেক্টরির মধ্যে ফাইল সৃষ্টি, পরিবর্তন, মুছে ফেলা ইত্যাদি ট্র্যাক করতে ব্যবহৃত হয়।
FileAlterationMonitor একটি নির্দিষ্ট সময়ের অন্তর ফাইল পরিবর্তন ট্র্যাক করতে থাকে এবং যখন কোনো পরিবর্তন ঘটে, তখন সেটি নির্দিষ্ট কার্যক্রম চালায়। এটি একটি থ্রেড-নির্ভর প্রক্রিয়া যা সিস্টেমের ভিতর নিয়মিতভাবে পরিবর্তনগুলো পর্যবেক্ষণ করে।
import org.apache.commons.io.FileAlterationObserver;
import org.apache.commons.io.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationListener;
import org.apache.commons.io.monitor.FileAlterationEvent;
import java.io.File;
public class FileMonitoringExample {
public static void main(String[] args) {
// Directory to be monitored
File directoryToMonitor = new File("/path/to/directory");
// Create FileAlterationObserver for the directory
FileAlterationObserver observer = new FileAlterationObserver(directoryToMonitor);
// Add a listener to monitor file changes
observer.addListener(new FileAlterationListener() {
@Override
public void onStart(FileAlterationObserver observer) {
System.out.println("Monitoring started...");
}
@Override
public void onDirectoryCreate(File directory) {
System.out.println("Directory created: " + directory.getAbsolutePath());
}
@Override
public void onDirectoryChange(File directory) {
System.out.println("Directory changed: " + directory.getAbsolutePath());
}
@Override
public void onDirectoryDelete(File directory) {
System.out.println("Directory deleted: " + directory.getAbsolutePath());
}
@Override
public void onFileCreate(File file) {
System.out.println("File created: " + file.getAbsolutePath());
}
@Override
public void onFileChange(File file) {
System.out.println("File changed: " + file.getAbsolutePath());
}
@Override
public void onFileDelete(File file) {
System.out.println("File deleted: " + file.getAbsolutePath());
}
@Override
public void onStop(FileAlterationObserver observer) {
System.out.println("Monitoring stopped...");
}
});
// Create FileAlterationMonitor with a polling interval (in milliseconds)
FileAlterationMonitor monitor = new FileAlterationMonitor(5000);
monitor.addObserver(observer);
// Start monitoring
try {
monitor.start();
Thread.sleep(30000); // Keep monitoring for 30 seconds
monitor.stop();
} catch (Exception e) {
e.printStackTrace();
}
}
}
এখানে:
FileAlterationObserver
নির্দিষ্ট ডিরেক্টরি এবং ফাইলের পরিবর্তনগুলি পর্যবেক্ষণ করছে।FileAlterationMonitor
৫ সেকেন্ড পর পর ডিরেক্টরি এবং ফাইলের পরিবর্তন পরীক্ষা করছে এবং যদি কোনো পরিবর্তন হয়, তবে উপযুক্ত লিসেনার মেথড চালাচ্ছে।FileAlterationListener
ফাইল এবং ডিরেক্টরির পরিবর্তনগুলির জন্য লিসেনার মেথড সরবরাহ করছে।File Monitoring হল একটি গুরুত্বপূর্ণ প্রক্রিয়া যা ফাইল সিস্টেমের পরিবর্তন ট্র্যাক করে এবং প্রয়োজন অনুযায়ী সেই পরিবর্তনগুলোকে ব্যবস্থাপনা করতে সহায়তা করে। Apache Commons IO লাইব্রেরি FileAlterationObserver
এবং FileAlterationMonitor
এর মাধ্যমে ফাইল সিস্টেমের পরিবর্তন পর্যবেক্ষণ এবং ট্র্যাক করা সহজ করে তোলে। এটি নিরাপত্তা, ব্যাকআপ, এবং সিস্টেমের পারফরম্যান্স ট্র্যাকিংয়ের জন্য খুবই কার্যকরী।
Apache Commons IO লাইব্রেরির একটি গুরুত্বপূর্ণ ফিচার হল FileAlterationListener, যা ব্যবহার করে আপনি একটি নির্দিষ্ট ডিরেক্টরি বা ফোল্ডারে ফাইল পরিবর্তন, নতুন ফাইল যোগ, অথবা ফাইল মুছে ফেলার মতো ইভেন্টগুলি সনাক্ত করতে পারেন। এটি এমন একটি উপায় প্রদান করে, যা আপনার প্রোগ্রামে বাস্তব সময়ে ফাইল পরিবর্তন মনিটর করতে সহায়তা করে।
ফাইলের পরিবর্তন ট্র্যাক করা বিভিন্ন ধরণের অ্যাপ্লিকেশনে গুরুত্বপূর্ণ, যেমন ফাইল সিস্টেম মনিটরিং, লগ ফাইল পর্যবেক্ষণ, বা ডাটা ব্যাকআপ সিস্টেম।
FileAlterationListener একটি ইন্টারফেস যা আপনাকে ফাইল পরিবর্তন সনাক্ত করার জন্য কিছু মেথড প্রদান করে, যেমন:
এগুলি আপনার মনিটরিং প্রক্রিয়ায় ফাইল বা ডিরেক্টরির ওপর যেকোনো পরিবর্তন সনাক্ত করতে সাহায্য করে।
এখানে FileAlterationListener ব্যবহার করে একটি ডিরেক্টরি মনিটর করা হচ্ছে, যেখানে ফাইল তৈরি, পরিবর্তন বা মুছে ফেলা হলে তা লগ আউটপুটে প্রদর্শিত হবে।
import org.apache.commons.io.FileAlterationListener;
import org.apache.commons.io.FileAlterationObserver;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationPolicy;
import java.io.File;
import java.io.IOException;
public class FileChangeMonitorExample {
public static void main(String[] args) throws Exception {
// Directory to be monitored
File directoryToMonitor = new File("path/to/directory");
// Create a FileAlterationObserver for the directory
FileAlterationObserver observer = new FileAlterationObserver(directoryToMonitor);
// Add a listener to monitor file changes
observer.addListener(new FileAlterationListener() {
@Override
public void onFileCreate(File file) {
System.out.println("File created: " + file.getName());
}
@Override
public void onFileChange(File file) {
System.out.println("File changed: " + file.getName());
}
@Override
public void onFileDelete(File file) {
System.out.println("File deleted: " + file.getName());
}
@Override
public void onDirectoryCreate(File directory) {
System.out.println("Directory created: " + directory.getName());
}
@Override
public void onDirectoryChange(File directory) {
System.out.println("Directory changed: " + directory.getName());
}
@Override
public void onDirectoryDelete(File directory) {
System.out.println("Directory deleted: " + directory.getName());
}
});
// Monitor the directory for changes every 1 second
FileAlterationMonitor monitor = new FileAlterationMonitor(1000);
monitor.addObserver(observer);
// Start monitoring
monitor.start();
System.out.println("Monitoring started. Press Ctrl+C to stop.");
}
}
FileAlterationObserver
ক্লাসটি একটি নির্দিষ্ট ডিরেক্টরি পর্যবেক্ষণ (monitor) করতে ব্যবহৃত হয়।FileAlterationListener
ইন্টারফেসের মাধ্যমে ফাইলের উপর ঘটে যাওয়া পরিবর্তনগুলি সনাক্ত করা হয়।onFileCreate()
– নতুন ফাইল তৈরি হলে এই মেথড কল হবে।onFileChange()
– ফাইল পরিবর্তিত হলে এই মেথড কল হবে।onFileDelete()
– ফাইল মুছে ফেলা হলে এই মেথড কল হবে।onDirectoryCreate()
, onDirectoryChange()
, onDirectoryDelete()
– ডিরেক্টরি সম্পর্কিত পরিবর্তন সনাক্ত করার জন্য ব্যবহৃত হয়।FileAlterationMonitor
১ সেকেন্ড অন্তর ডিরেক্টরিটি মনিটর করে এবং যেকোনো পরিবর্তন হলে সংশ্লিষ্ট মেথড কল হয়।আপনি যখন FileAlterationMonitor ব্যবহার করেন, তখন এটি নির্দিষ্ট সময় অন্তর ডিরেক্টরি মনিটর করে। এই সময়টি কাস্টমাইজ করা যায়। উদাহরণস্বরূপ, প্রতিটি ১ সেকেন্ড পর মনিটরিং করা হচ্ছে, তবে এটি বাড়ানো বা কমানো সম্ভব।
FileAlterationMonitor monitor = new FileAlterationMonitor(2000); // 2 seconds interval
আপনি যদি চান, তাহলে আলাদা FileAlterationListener ইনস্ট্যান্স ব্যবহার করে একাধিক ডিরেক্টরি বা ফাইলের জন্য আলাদা মনিটরিং লজিক প্রয়োগ করতে পারেন।
ফাইল বা ডিরেক্টরি পরিবর্তনের সময় System.out.println() এর মাধ্যমে কনসোল বা লগে আউটপুট দিতে পারবেন, যা আপনাকে ট্র্যাক করতে সাহায্য করবে কোন ফাইলের উপর পরিবর্তন হয়েছে।
Apache Commons IO - FileAlterationListener আপনাকে সহজেই ফাইল বা ডিরেক্টরি পর্যবেক্ষণ করার সুযোগ দেয়। এটি ফাইলের পরিবর্তন সনাক্ত করতে ব্যবহৃত হয় এবং ফাইল তৈরি, পরিবর্তন বা মুছে ফেলা হলে বিভিন্ন কার্যক্রম সম্পাদন করতে সাহায্য করে। আপনি এটি ব্যবহার করে আপনার Java অ্যাপ্লিকেশনকে আরও শক্তিশালী এবং কার্যকরী করতে পারেন, যেমন লগ ফাইল মনিটরিং, ডেটা ব্যাকআপ, এবং অন্যান্য অনেক ফাইল সিস্টেম সম্পর্কিত কার্যক্রম।
Apache Commons IO লাইব্রেরি ফাইল এবং ডিরেক্টরি সম্পর্কিত অনেক শক্তিশালী ইউটিলিটি সরবরাহ করে। এর মধ্যে দুটি গুরুত্বপূর্ণ ক্লাস হল FileAlterationObserver এবং FileAlterationMonitor। এগুলি ফাইল সিস্টেম এর পরিবর্তন (যেমন ফাইল তৈরি, পরিবর্তন, ডিলিট) ট্র্যাক করার জন্য ব্যবহৃত হয়। এই ক্লাসগুলো ফাইল বা ডিরেক্টরির মধ্যে পরিবর্তন ঘটলে তাত্ক্ষণিকভাবে সাড়া দিতে সাহায্য করে।
FileAlterationObserver হল একটি ক্লাস যা নির্দিষ্ট ডিরেক্টরি এবং তার অধীনে থাকা ফাইলগুলির পরিবর্তন পর্যবেক্ষণ (monitor) করার জন্য ব্যবহৃত হয়। এটি একটি বা একাধিক ডিরেক্টরি পর্যবেক্ষণ করতে পারে এবং ফাইলের মধ্যে কোনো পরিবর্তন হলে তার উপর কার্যকরী কিছু অ্যাকশন নেয়।
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.apache.commons.io.monitor.FileAlterationListener;
import org.apache.commons.io.monitor.FileAlterationEvent;
import java.io.File;
public class FileAlterationObserverExample {
public static void main(String[] args) {
// পর্যবেক্ষণ করার জন্য একটি ডিরেক্টরি নির্ধারণ
File directoryToObserve = new File("path/to/directory");
// FileAlterationObserver তৈরি করা
FileAlterationObserver observer = new FileAlterationObserver(directoryToObserve);
// পরিবর্তনগুলি শুনতে FileAlterationListener ব্যবহার করা
observer.addListener(new FileAlterationListener() {
@Override
public void onDirectoryCreate(File directory) {
System.out.println("ডিরেক্টরি তৈরি হয়েছে: " + directory.getName());
}
@Override
public void onDirectoryChange(File directory) {
System.out.println("ডিরেক্টরি পরিবর্তিত হয়েছে: " + directory.getName());
}
@Override
public void onDirectoryDelete(File directory) {
System.out.println("ডিরেক্টরি মুছে ফেলা হয়েছে: " + directory.getName());
}
@Override
public void onFileCreate(File file) {
System.out.println("ফাইল তৈরি হয়েছে: " + file.getName());
}
@Override
public void onFileChange(File file) {
System.out.println("ফাইল পরিবর্তিত হয়েছে: " + file.getName());
}
@Override
public void onFileDelete(File file) {
System.out.println("ফাইল মুছে ফেলা হয়েছে: " + file.getName());
}
});
// Observer কে পর্যবেক্ষণের জন্য শুরু করা
observer.checkAndNotify();
}
}
এখানে:
FileAlterationMonitor হল একটি ক্লাস যা FileAlterationObserver ব্যবহার করে ফাইল সিস্টেমের পরিবর্তন মনিটর করে এবং সময়ের নির্দিষ্ট সীমার মধ্যে পর্যবেক্ষণ করার জন্য এটি ইভেন্ট গুলি ট্রিগার করে। এটি সিস্টেমের কার্যকারিতা উন্নত করতে ব্যবহৃত হয়, কারণ এটি periodic checking এর মাধ্যমে ফাইল সিস্টেম পরিবর্তনগুলি পর্যবেক্ষণ করে।
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.apache.commons.io.monitor.FileAlterationListener;
import org.apache.commons.io.monitor.FileAlterationEvent;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import java.io.File;
public class FileAlterationMonitorExample {
public static void main(String[] args) throws Exception {
// পর্যবেক্ষণ করার জন্য একটি ডিরেক্টরি নির্ধারণ
File directoryToObserve = new File("path/to/directory");
// FileAlterationObserver তৈরি করা
FileAlterationObserver observer = new FileAlterationObserver(directoryToObserve);
// FileAlterationListener যোগ করা
observer.addListener(new FileAlterationListener() {
@Override
public void onDirectoryCreate(File directory) {
System.out.println("ডিরেক্টরি তৈরি হয়েছে: " + directory.getName());
}
@Override
public void onDirectoryChange(File directory) {
System.out.println("ডিরেক্টরি পরিবর্তিত হয়েছে: " + directory.getName());
}
@Override
public void onDirectoryDelete(File directory) {
System.out.println("ডিরেক্টরি মুছে ফেলা হয়েছে: " + directory.getName());
}
@Override
public void onFileCreate(File file) {
System.out.println("ফাইল তৈরি হয়েছে: " + file.getName());
}
@Override
public void onFileChange(File file) {
System.out.println("ফাইল পরিবর্তিত হয়েছে: " + file.getName());
}
@Override
public void onFileDelete(File file) {
System.out.println("ফাইল মুছে ফেলা হয়েছে: " + file.getName());
}
});
// FileAlterationMonitor তৈরি করা, এখানে 10 সেকেন্ড পর পর পর্যবেক্ষণ করবে
FileAlterationMonitor monitor = new FileAlterationMonitor(10000, observer);
// Monitor চালু করা
monitor.start();
// কিছু সময় পর, পর্যবেক্ষণ বন্ধ করা (উদাহরণস্বরূপ 30 সেকেন্ড পরে)
Thread.sleep(30000);
monitor.stop();
}
}
এখানে:
আউটপুট:
ফাইল তৈরি হয়েছে: example.txt
ফাইল পরিবর্তিত হয়েছে: example.txt
FileAlterationObserver এবং FileAlterationMonitor ক্লাসগুলি Apache Commons IO লাইব্রেরির গুরুত্বপূর্ণ অংশ, যা ফাইল এবং ডিরেক্টরি সিস্টেমের মধ্যে real-time পরিবর্তন সনাক্ত করতে ব্যবহৃত হয়। FileAlterationObserver ক্লাসটি ফাইল সিস্টেমের পরিবর্তন পর্যবেক্ষণ করে, এবং FileAlterationMonitor ক্লাসটি নির্দিষ্ট সময় পর পর FileAlterationObserver কে checkAndNotify() মেথডের মাধ্যমে ফাইল সিস্টেমে পরিবর্তনগুলোর সনাক্তকরণ করতে সাহায্য করে। এটি ফাইল সিস্টেমের নিরাপত্তা, পরিবর্তন ট্র্যাকিং এবং অটোমেটেড ডেটা ম্যানেজমেন্ট ব্যবস্থার জন্য অত্যন্ত কার্যকরী।
Apache Commons IO লাইব্রেরি ফাইল এবং ডিরেক্টরি মনিটরিং এর জন্য কিছু কার্যকরী টুলস প্রদান করে। এর মাধ্যমে আপনি একটি নির্দিষ্ট ফাইল বা ডিরেক্টরির পরিবর্তনগুলি মনিটর করতে পারেন, যেমন নতুন ফাইল তৈরি হওয়া, কোনো ফাইল পরিবর্তিত হওয়া বা মুছে ফেলা। এটি বিশেষভাবে ব্যবহৃত হয় যখন আপনি ফাইল সিস্টেমে পরিবর্তনগুলি ট্র্যাক করতে চান, যেমন লগ ফাইল মনিটরিং, ডেটা প্রক্রিয়া বা ফাইল আর্কাইভিংয়ের জন্য।
Apache Commons IO লাইব্রেরির মধ্যে FileAlterationMonitor
এবং FileAlterationObserver
ক্লাসগুলো ফাইল এবং ডিরেক্টরি পরিবর্তন মনিটর করার জন্য ব্যবহৃত হয়।
FileAlterationObserver
ক্লাসটি একটি নির্দিষ্ট ডিরেক্টরি পর্যবেক্ষণ করে এবং সেখানে কোনো পরিবর্তন হলে সেগুলি শনাক্ত করতে সাহায্য করে। এটি একটি ডিরেক্টরি বা তার সাবডিরেক্টরিতে ফাইলের তৈরি, পরিবর্তন এবং মুছে ফেলা বিষয়ে অবহিত করতে ব্যবহৃত হয়।
এটি আপনাকে ডিরেক্টরি পর্যবেক্ষণ করতে এবং নির্দিষ্ট কার্যক্রম সম্পাদন করতে সহায়তা করে।
FileAlterationMonitor
ক্লাসটি নির্দিষ্ট সময় পর পর FileAlterationObserver এর মাধ্যমে নির্দিষ্ট ডিরেক্টরি পর্যবেক্ষণ করে। এটি আপনার কোডের মধ্যে সময়সীমার ভিত্তিতে ডিরেক্টরি এবং ফাইলের পরিবর্তন পর্যবেক্ষণ করতে সক্ষম করে।
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.apache.commons.io.monitor.FileAlterationListener;
import java.io.File;
import java.io.IOException;
public class DirectoryMonitorExample {
public static void main(String[] args) {
// Directory to monitor
File directoryToMonitor = new File("/path/to/monitor");
// Create a FileAlterationObserver for the specified directory
FileAlterationObserver observer = new FileAlterationObserver(directoryToMonitor);
// Create a FileAlterationListener to listen for file changes
observer.addListener(new FileAlterationListener() {
@Override
public void onDirectoryCreate(File directory) {
System.out.println("Directory created: " + directory.getAbsolutePath());
}
@Override
public void onDirectoryChange(File directory) {
System.out.println("Directory modified: " + directory.getAbsolutePath());
}
@Override
public void onDirectoryDelete(File directory) {
System.out.println("Directory deleted: " + directory.getAbsolutePath());
}
@Override
public void onFileCreate(File file) {
System.out.println("File created: " + file.getAbsolutePath());
}
@Override
public void onFileChange(File file) {
System.out.println("File modified: " + file.getAbsolutePath());
}
@Override
public void onFileDelete(File file) {
System.out.println("File deleted: " + file.getAbsolutePath());
}
@Override
public void onStart() {
System.out.println("Monitor started.");
}
@Override
public void onStop() {
System.out.println("Monitor stopped.");
}
});
// Create a FileAlterationMonitor to monitor the directory every 5000 milliseconds (5 seconds)
FileAlterationMonitor monitor = new FileAlterationMonitor(5000, observer);
try {
// Start the monitor
monitor.start();
} catch (Exception e) {
e.printStackTrace();
}
// To simulate, we'll run the monitor for a while, then stop it
try {
Thread.sleep(20000); // Monitor for 20 seconds
monitor.stop();
} catch (InterruptedException | IOException e) {
e.printStackTrace();
}
}
}
এখানে:
FileAlterationObserver
ক্লাসটি ডিরেক্টরি পর্যবেক্ষণ করতে ব্যবহৃত হয়েছে এবং FileAlterationListener
এর মাধ্যমে ফাইল ও ডিরেক্টরি সম্পর্কিত পরিবর্তন শনাক্ত করা হচ্ছে।FileAlterationMonitor
ক্লাসটি নির্দিষ্ট সময় পর পর পরিবর্তন ট্র্যাক করতে ব্যবহৃত হয়েছে (এখানে প্রতি ৫ সেকেন্ডে মনিটর হচ্ছে)।monitor.start()
দ্বারা মনিটরিং শুরু করা হয় এবং monitor.stop()
দ্বারা এটি বন্ধ করা হয়।FileAlterationListener
ইন্টারফেসটি ফাইল এবং ডিরেক্টরি তৈরি, পরিবর্তন এবং মুছে ফেলা সম্পর্কে callback মেথড প্রদান করে, যেমন onFileCreate()
, onFileChange()
, onFileDelete()
ইত্যাদি।IOUtils ক্লাসটি স্ট্রিম ও ফাইল সম্পর্কিত আরও কার্যকরী অপারেশন সরবরাহ করে, যখন FileAlterationMonitor এবং FileAlterationObserver ফাইল সিস্টেমের পরিবর্তন মনিটরিংয়ের জন্য ব্যবহৃত হয়। আপনি একটি নির্দিষ্ট ডিরেক্টরি পর্যবেক্ষণ করার সময় স্ট্রিম অপারেশনও করতে পারেন, যেমন IOUtils.copy() এর মাধ্যমে ফাইল কপি করা।
Apache Commons IO লাইব্রেরির FileAlterationMonitor এবং FileAlterationObserver ক্লাসগুলি ফাইল এবং ডিরেক্টরি পর্যবেক্ষণ করতে সাহায্য করে, যা ডেটা প্রক্রিয়া বা ফাইল সিস্টেম ট্র্যাকিংয়ে অত্যন্ত কার্যকর। এই ক্লাসগুলির মাধ্যমে আপনি কোনো ডিরেক্টরিতে বা ফাইল সিস্টেমে পরিবর্তন সনাক্ত করতে পারেন এবং সেই অনুযায়ী কার্যক্রম চালাতে পারেন। এর মাধ্যমে, আপনি ডিরেক্টরি এবং ফাইল সিস্টেমের পরিবর্তনগুলি কার্যকরভাবে মনিটর করতে সক্ষম হবেন, যা বিভিন্ন ধরণের ফাইল পরিচালনা সিস্টেম, লগ মনিটরিং, এবং ডেটা প্রক্রিয়া ব্যবস্থাপনায় সহায়ক।
common.read_more